package com.niit.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.niit.utils.JDBCUtils;

public class UsersDao {
	
	/**用戶注册
	 * @author Trout
	 * @param username 用户名
	 * @param password 密码
	 * @return
	 * @throws SQLException
	 * @date 2024年6月6日
	 */
	public boolean register(String username,String password) throws SQLException {
//		获得数据库链接
		Connection connection = JDBCUtils.getConnection();
		String sql = "insert into users (username,password) values(?,?)";
//		使用PreparedStatement执行SQL语句可以防止SQL注入
		PreparedStatement ps = connection.prepareStatement(sql);
//		设置占位符的参数
		ps.setString(1, username);
		ps.setString(2, password);
//		执行SQL语句，返回受影响的行数
		int i = ps.executeUpdate();
		return i > 0 ? true: false;
	}
//	判断登录是否成功的条件：用户名和密码能在数据库同时查询到
	/**
	 * 用户登录
	 * @author Trout
	 * @param username 用户名
	 * @param password 密码
	 * @return
	 * @date 2024年6月6日
	 * @throws SQLException
	 */
	public int login(String username,String password) throws SQLException {
		Connection connection = JDBCUtils.getConnection();
		String sql = "select * from users where username = ? and password = ?";
		PreparedStatement ps = connection.prepareStatement(sql);
//		设置占位符的参数
		ps.setString(1, username);
		ps.setString(2, password);
		ResultSet rs = ps.executeQuery();
		int userId = 0;
		if(rs.next()) {
			userId = rs.getInt(1);
		}
		return userId;
	}
	
	public List<Integer> getRoleByUserId(int userId) throws SQLException {
		List<Integer> roleList = new ArrayList<>();
		Connection connection = JDBCUtils.getConnection();
		String sql = "SELECT r.role_id from role r LEFT JOIN user_role us on r.role_id = us.role_id where us.user_id = ?";
		PreparedStatement ps = connection.prepareStatement(sql);
//		设置占位符的参数
		ps.setInt(1, userId);
		ResultSet rs = ps.executeQuery();
		if(rs.next()) {
			int roleId = rs.getInt("r.role_id");
			roleList.add(roleId);
		}
		return roleList;
	}

}
